package net.ifilm.dao;

import com.ibatis.sqlmap.client.SqlMapClient;
import net.ifilm.entity.FilmDiscuss;
import net.ifilm.entity.FilmType;
import net.ifilm.entity.PageCount;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <code>FilmTypeDao</code>类主要用于对电影类型表<tt>filmtype</tt>的增删改查的操作
 */
@Repository
public class FilmTypeDao extends SqlMapClientDaoSupport {
    
    @Autowired
    public void setSqlMapClientOverride(SqlMapClient sqlMapClient) {
        super.setSqlMapClient(sqlMapClient);
    }

    // ----------------------------------------------------------------------------------------------- public method

    /**
     * 查询电影类型表总纪录数
     *
     * @return 电影类型记录数
     */
    public int queryFilmTypeCount() {
        return (Integer)getSqlMapClientTemplate().queryForObject("queryFilmTypeCount");
    }

    /**
     * 分页查询电影类型列表
     *
     * @param pageCount
     * @return
     */
    public List<FilmType> querySplitFilmType(PageCount pageCount) {
        return getSqlMapClientTemplate().queryForList("querySplitFilmType", pageCount);
    }

    /**
     * 插入新的电影类型名称
     *
     * @param newFilmType 电影类型名称
     */
    public void insertFilmType(String newFilmType) {
        getSqlMapClientTemplate().insert("insertFilmType", newFilmType);
    }


    /**
     * 根据类型名称查询电影类型纪录
     *
     * @param newFilmType 电影类型名称
     * @return
     */
    public int queryFilmTypeByName(String newFilmType) {
        return (Integer) getSqlMapClientTemplate().queryForObject("queryFilmTypeByName", newFilmType);
    }

    /**
     * 根据ID删除电影类型
     *
     * @param filmTypeId 电影类型Id
     */
    public void delFilmTypeById(int filmTypeId) {
        getSqlMapClientTemplate().delete("delFilmTypeById", filmTypeId);
    }

    /**
     * 更新电影类型名称
     *
     * @param filmType
     */
    public void updateTypeName(FilmType filmType) {
        getSqlMapClientTemplate().update("updateTypeName", filmType);
    }

    /**
     * 根据电影ID删除关联的电影类型
     *
     * @param filmId
     */
    public void deleteRelFilmType(int filmId) {
        getSqlMapClientTemplate().delete("delRelFilmType", filmId);
    }

    /**
     * 关联电影与类型的关系
     *
     * @param parameterMap 参数表
     */
    public void relFilmType(Map<String, Object> parameterMap) {
        getSqlMapClientTemplate().insert("relFilmType", parameterMap);
    }

    public List<FilmType> queryFilmTypeByFilmId(int filmId) {
        return getSqlMapClientTemplate().queryForList("queryFilmTypeByFilmId", filmId);
    }

    public void delFilmType(Map<String, Object> parameterMap) {
        getSqlMapClientTemplate().delete("delFilmType", parameterMap);
    }
} // /:~
